# 逻辑运算符
# and并且     两侧操作数均为True，表达式的值为True，否则为False（一假则假）
# or或        两侧操作数均为False，表达式的值为False，否则为True（一真则真）
# not逻辑取反  只有一个操作数，操作数为True，则返回False；操作数为False则返回True

a = 10
b = 20
c = 30

print(a < b and b < c)  #等价于 a<b<c
print(a < b and b > c)

print(a > b or b < c)
print(a < b or b > c)
print(a > b or b > c)


print(not a < b)
print(not a > b)


# C++使用 && || ！表示并且 或者 取反


# 逻辑运算符中的重要细节：短路求值~
# 对于and操作来说，如果左侧表达式为False，那么整体的值一定是False，右侧表达式不必求值！
# 对于or操作来说，如果左侧表达式为True，那么整体的值一定是True，右侧表达式不必求值！


print(a > b and 10/0 == 1) #左侧表达式是False，右侧就不在求值了，因为一旦右侧运行是会出现异常的
print(a < b or 10/0 == 1)  #True


# 短路求值这种行为，大部分的编程语言都有，C C++ Java

